

package com.api.oa.services;

import com.api.oa.model.entity.YQTask;
import com.api.oa.model.params.YQTaskParam;
import com.api.oa.model.vo.YQTaskVO;
import com.api.oa.model.vo.YQTaskWeekVO;
import com.github.pagehelper.PageInfo;
import java.util.List;

public interface YQTaskService {


    Integer add(YQTask entity) throws Exception;


    void remove(Long id);


    Integer update(YQTask org);


    PageInfo<YQTaskVO> list(Long pid, String taskStats, String keyWord, String start, String end,Integer pageIndex,Integer pageSize);


    PageInfo<YQTaskVO> queryByUserId(Long careUser, String date, Boolean isCare,Integer pageIndex, Integer pageSize);

    /**
     * android  病患查询自己服务申请  后面可以添加日期查询
     * @param insUserId
     * @param pageIndex
     * @param pageSize
     * @return
     */
    PageInfo<YQTaskVO> queryTaskByPatient(Long insUserId, Boolean isRange,Integer pageIndex, Integer pageSize);



    YQTaskVO one(Long id);


    YQTaskVO info(Long id);




    YQTaskVO findOneByTaskId(Long id);


    /**
     * 护工查询自己的工作表
     * @param start
     * @param end
     * @param careUser
     * @return
     */
    List<YQTaskWeekVO> pageWeek(String start,String end,Long careUser);


    /**
     * 验证患者 和医护的距离 通过二维码
     * @param qrCode
     * @param taskId
     * @return
     */
    Integer verifyCareByScanQR(String qrCode, Long taskId, Double lat, Double lng) throws Exception;


    /**
     * 查询剩余患者数
     * @param careUser
     * @param date
     * @return
     */
    Integer queryLeftPatient(Long careUser, String date);

    /**
     * 完成服务
     * @param id
     * @return
     */
    Integer finishTaskById(Long id);


    /**
     * 患者申请服务
     * @param entity
     * @return
     */
    Integer request(YQTask entity) throws Exception;


    /**
     * 申请
     * @param insUserId
     * @param pageIndex
     * @param pageSize
     * @return
     */
    PageInfo<YQTaskVO> queryByInsUser(Long insUserId,String taskStats, String keyWord, String start, String end, Integer pageIndex, Integer pageSize);

    /**
     * 护工查询自己的记录
     * @param userId
     * @param pageIndex
     * @param pageSize
     * @return
     */
    PageInfo<YQTaskVO> queryServiceByCare(Long userId, Integer pageIndex, Integer pageSize);
    /**
     * 申请分配护工
     * @param entity
     * @return
     */
    Integer dispatchCare(YQTask entity);

    /**
     *
     * @param pageIndex
     * @param pageSize
     * @return
     */
    PageInfo<YQTaskVO> queryMyService(Long userId,Integer pageIndex, Integer pageSize);


    /**
     * 设置满意度
     * @param taskId
     * @param value
     * @return
     */
    Integer setTaskStaisfication(Long taskId,String value) throws Exception;


    /**
     * 开始服务
     * @param taskId
     * @param lat
     * @param lng
     * @return
     */
    Integer startTaskService(Long taskId, Double lat, Double lng) throws Exception;


    /**
     * 批量排班计划
     * @param entity
     * @return
     */
    Integer requestBatch(YQTaskParam entity);

}
